function jsonp(opt) {
    // jsonp请求就是利用script标签，每发送一个jsonp请求，创建一个script标签
    var script = document.createElement("script");

    // opt.data对象，转化成查询字符串
    var tmp = [];

    for (var key in opt.data) {
        // 把name = lisi放进去，key是name,opt.data[key]是lisi
        tmp.push(`${key}=${opt.data[key]}`);
    }

    // 为每一次jsonp的请求生成一个唯一的函数名
    // toString()转化成字符串，replace(".")把小数点替换为空
    var fn = "fn" + Math.random().toString().replace(".","");
    tmp.push("callback=" + fn);
    var qs = tmp.join("&");

    // 少了"?callback=fn",服务端发过来的就是json数据，不是字符串
    script.src = opt.url + "?" + qs;
    // document.body返回当前文档中的<body>元素
    document.body.appendChild(script);

    // 把data变成一个全局变量
    window[fn] = opt.success;

    // script标签代码执完了会触发onload事件
    script.onload = function () {
        document.body.removeChild(script);

        // 防止内存泄露，内存回收机制才能真正的让script消失
        script.onload = null;
        script = null;

        delete window[fn];

    }
}


